--[[
模块   : 导航Controller管理viewController
]]
NavCtrl = Class('NavCtrl');  -- 定义一个类

-- 定义全局变量
NavCtrl.rootViewCtrl = nil
NavCtrl.viewCtrls = nil;    -- controllers  集合
NavCtrl.mNumber = nil;
NavCtrl.rootView = nil;
-- 局部变量


--[[
功能   ： 初始navviewcontroller
参数   ： rootView --- 根view
返回   ： 无
]]
function NavCtrl:init()
    return self;
end

function NavCtrl:ctor()
  	self.viewCtrls = {}
  	self.rootView=   MLNative.getScreen();
  	self.rootView:setColor(0xffffff)
end

--[[
功能   ： 初始navviewcontroller
参数   ： rootView --- 根view
返回   ： 无
]]
function NavCtrl.initRootViewCtrl(ViewCtrlClassName,rootNavCtrl)
    local viewCtrl =ViewCtrlClassName.new();  -- 创建根控制器
    rootNavCtrl:push(viewCtrl);
end

--[[
功能   ： 将viewcontroller 压栈
参数   ： viewCtrl --- viewControler
animat   --- 动画类型
返回   ： 无
]]
function NavCtrl:push(viewCtrl,animat)
	local w, h = self.rootView:getWH();
	--local view = MLView.new():initView(w, h,nil,'viewCtrl.rootView');
	local view = MLView.new():initView(w, h,viewCtrl);
	view:setColor(0xffffff)
	viewCtrl.rootView = view;
    viewCtrl.navCtrl = self;
	local num = #self.viewCtrls;
	self.viewCtrls[num+1] = viewCtrl;
	viewCtrl:onCtrlCreate(view);
	if num == 0 then   --- 一个直接添加
		self.rootView:add(view);
	else
		--self.rootView:delAll();    --有view穿透
		self.viewCtrls[num]:onCtrlPause();  -- 暂停
		--CtrlSwitch.push(rootView, curCtrl, nextCtrl, animationType)
		CtrlSwitch.push(self.rootView, self.viewCtrls[num], viewCtrl,2);
	end

end

--  方法
--[[
功能   ： 将 最顶的 viewcontroller 出栈
参数   ： animat --- 动画类型
返回   ： 无
]]
function NavCtrl:pop(animat)
	local num = #self.viewCtrls;
	if num > 1 then
		local curCtrl = self.viewCtrls[num];
		local preCtrl = self.viewCtrls[num-1];
		self.viewCtrls[num] = nil;		
		preCtrl:onCtrlResume();	 
		CtrlSwitch.pop(self.rootView, curCtrl , preCtrl, 2);
		curCtrl:onCtrlDestroy();
	else	
		self.rootView:delAll();
		self.viewCtrls = nil;
	end
	print('NavCtrl:pop->end', #self.viewCtrls)
end


function NavCtrl:popOfViewCtrl(viewCtrl,animat)
	local num = #self.viewCtrls;
	local curCtrl = self.viewCtrls[num];
    if curCtrl == viewCtrl then return end
    local exist = false;
    for i,v in ipairs(self.viewCtrls) do
    	if v== viewCtrl then
    		 exist = true;
    	end
    end

	if exist == false then return; end
	while(#self.viewCtrls)
		do
		local num = #self.viewCtrls;
		if self.viewCtrls[num] ~=  viewCtrl then
			self.viewCtrls[num]:onCtrlDestroy();
			self.viewCtrls[num] = nil;
		else
			break;
		end
	end

	--go to preCtrl
	local w, h = self.rootView:getWH();	--
	CtrlSwitch.pop(self.rootView, curCtrl , viewCtrl,2);
	--preCtrl:onCtrlResume();

	--curCtrl:onCtrlDestroy();


end
--  方法
--[[
功能   ： 删除指定ID的viewController
参数   ： id --- viewControler 的id
返回   ： 无
注：      不能是自己
]]
function NavCtrl:delOfId(id)

end

